home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat1 / mpirun.z / mpirun
Encoding:
Text File  |  2002-10-03  |  35.1 KB  |  661 lines

  1.  
  2.  
  3.  
  4. mmmmppppiiiirrrruuuunnnn((((1111))))                                                            mmmmppppiiiirrrruuuunnnn((((1111))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      mmmmppppiiiirrrruuuunnnn - Runs MPI programs
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      mmmmppppiiiirrrruuuunnnn [[[[_g_l_o_b_a_l__o_p_t_i_o_n_s] _e_n_t_r_y__o_b_j_e_c_t [:_e_n_t_r_y__o_b_j_e_c_t ...]
  13.  
  14. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  15.      The mmmmppppiiiirrrruuuunnnn command is the primary job launcher for the Message Passing
  16.      Toolkit (MPT) implementations of MPI. The mmmmppppiiiirrrruuuunnnn command must be used
  17.      when a user wants to run an MPI application on IRIX or Linux systems.  In
  18.      addition, for IRIX systems to launch MPI programs, Array Services
  19.      software must be running.
  20.  
  21.      MPI implements the MPI 1.2 standard, as documented by the MPI Forum in
  22.      the spring 1997 release of _M_P_I: _A _M_e_s_s_a_g_e _P_a_s_s_i_n_g _I_n_t_e_r_f_a_c_e _S_t_a_n_d_a_r_d.  In
  23.      addition, certain MPI-2 functions are implemented. However, several MPI
  24.      implementations available today use a job launcher called mmmmppppiiiirrrruuuunnnn, and
  25.      because this command is not part of the MPI standard, each
  26.      implementation's mmmmppppiiiirrrruuuunnnn command differs in both syntax and functionality.
  27.  
  28.      You can run an application on the local host only (the host from which
  29.      you issued mmmmppppiiiirrrruuuunnnn) or distribute it to run on any number of hosts that
  30.      you specify.
  31.  
  32.      The mmmmppppiiiirrrruuuunnnn command accepts the following operands:
  33.  
  34.      The _g_l_o_b_a_l__o_p_t_i_o_n_s operand applies to all MPI executable files on all
  35.      specified hosts. Global options must be specified before local options
  36.      specific to a host (_e_n_t_r_y__o_b_j_e_c_t).  The following global options are
  37.      supported:
  38.  
  39.      GGGGlllloooobbbbaaaallll OOOOppppttttiiiioooonnnn            DDDDeeeessssccccrrrriiiippppttttiiiioooonnnn
  40.  
  41.      ----aaaa[[[[rrrrrrrraaaayyyy]]]] _a_r_r_a_y__n_a_m_e      (This option is supported on IRIX systems only.)
  42.                               Specifies the array to use when launching an MPI
  43.                               application.  By default, Array Services uses
  44.                               the default array specified in the Array
  45.                               Services configuration file,
  46.                               ////uuuussssrrrr////lllliiiibbbb////aaaarrrrrrrraaaayyyy////aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff.
  47.  
  48.      ----ccccpppprrrr                     (This option is supported on IRIX systems only.)
  49.                               Allows users to checkpoint or restart MPI jobs
  50.                               that consist of a single executable file running
  51.                               on a single system.  Since MPI launches jobs
  52.                               through Array Services, you must also ensure
  53.                               that the array to which you are submitting
  54.                               contains only the local host.  (If you do not
  55.                               specify an array, you must ensure that the
  56.                               default array contains only the local host.)
  57.                               The absence of any host names in the mmmmppppiiiirrrruuuunnnn
  58.                               command indicates that a job is running on a
  59.                               single system.
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. mmmmppppiiiirrrruuuunnnn((((1111))))                                                            mmmmppppiiiirrrruuuunnnn((((1111))))
  71.  
  72.  
  73.  
  74.                               For example, the following command is valid in
  75.                               ksh (OOOOUUUUTTTTFFFFIIIILLLLEEEE is the file to which ssssttttddddoooouuuutttt will be
  76.                               redirected, which may also be ////ddddeeeevvvv////nnnnuuuullllllll):
  77.  
  78.                     mpirun -v -cpr -np 2 a.out > OUTFILE 2>&1 < /dev/null
  79.  
  80.  
  81.                               The following commands are not valid:
  82.  
  83.                     mpirun -cpr 2 ./a.out : 3 ./b.out
  84.                     mpirun -cpr hosta -np 2 ./a.out>out 2>&1 </dev/null
  85.  
  86.  
  87.                               The first one is not valid because it consists
  88.                               of more than one executable file (aaaa....oooouuuutttt and
  89.                               bbbb....oooouuuutttt).  The second one is not valid because
  90.                               even if submitted from hhhhoooossssttttaaaa, it specifies a
  91.                               host name.
  92.  
  93.                               For interactive users, the preferred method of
  94.                               checkpointing the job is by AAAASSSSHHHH.  This ensures
  95.                               that all of the user's processes specified in
  96.                               the mmmmppppiiiirrrruuuunnnn command, plus daemons associated with
  97.                               the job, will be checkpointed.  You can use the
  98.                               aaaarrrrrrrraaaayyyy(1) command to find the AAAASSSSHHHH of a job.
  99.                               Interactive users should also note that ssssttttddddiiiinnnn,
  100.                               ssssttttddddoooouuuutttt, and ssssttttddddeeeerrrrrrrr should not be connected to
  101.                               the terminal when this option is being used.
  102.  
  103.                               Use of this option requires Array Services 3.1
  104.                               or later.
  105.  
  106.                               The default behavior will allow for jobs to be
  107.                               checkpointed if the above rules for invoking
  108.                               have been followed, but using the ----ccccpppprrrr option is
  109.                               recommended because it provides specific error
  110.                               messages instead of silently disabling.
  111.  
  112.      ----dddd[[[[iiiirrrr]]]] _p_a_t_h__n_a_m_e         Specifies the working directory for all hosts.
  113.                               In addition to normal path names, the following
  114.                               special values are recognized:
  115.  
  116.                                    ....    Translates into the absolute path name
  117.                                         of the user's current working
  118.                                         directory on the local host. This is
  119.                                         the default.
  120.  
  121.                                    ~~~~    Specifies the use of the value of
  122.                                         $$$$HHHHOOOOMMMMEEEE as it is defined on each
  123.                                         machine. In general, this value can be
  124.                                         different on each machine.
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. mmmmppppiiiirrrruuuunnnn((((1111))))                                                            mmmmppppiiiirrrruuuunnnn((((1111))))
  137.  
  138.  
  139.  
  140.      ----ffff[[[[iiiilllleeee]]]] _f_i_l_e__n_a_m_e        Specifies a text file that contains mmmmppppiiiirrrruuuunnnn
  141.                               arguments.
  142.  
  143.      ----hhhh[[[[eeeellllpppp]]]]                  Displays a list of options supported by the
  144.                               mmmmppppiiiirrrruuuunnnn command.
  145.  
  146.      ----mmmmiiiisssseeeerrrr                   (This option is supported on IRIX systems only.)
  147.                               Allows MPI jobs that run on a single system to
  148.                               be submitted to mmmmiiiisssseeeerrrr. The absence of any host
  149.                               names in the mmmmppppiiiirrrruuuunnnn command indicates that a job
  150.                               is running on a single system, and thus can be
  151.                               submitted to mmmmiiiisssseeeerrrr.  For example, the following
  152.                               command is valid:
  153.  
  154.                     miser_submit -q queue -f file mpirun -miser 2 ./a.out : 3 ./b.out
  155.  
  156.  
  157.                               The following command is not valid, even if
  158.                               submitted on hhhhoooossssttttaaaa:
  159.  
  160.                     miser_submit -q queue -f file mpirun -miser hosta 2 ./a.out
  161.  
  162.  
  163.                               Use of this option requires Array Services 3.1
  164.                               or later.
  165.  
  166.      ----pppp[[[[rrrreeeeffffiiiixxxx]]]] _p_r_e_f_i_x__s_t_r_i_n_g  Specifies a string to prepend to each line of
  167.                               output from ssssttttddddeeeerrrrrrrr and ssssttttddddoooouuuutttt for each MPI
  168.                               process. To delimit lines of text that come from
  169.                               different hosts, output to ssssttttddddoooouuuutttt must be
  170.                               terminated with a new line character.  If a
  171.                               process's ssssttttddddoooouuuutttt or ssssttttddddeeeerrrrrrrr streams do not end
  172.                               with a new line character, there will be no
  173.                               prefix associated with the output or error
  174.                               streams of that process from the final new line
  175.                               to the end of the stream.
  176.  
  177.                               If the MMMMPPPPIIII____UUUUNNNNBBBBUUUUFFFFFFFFEEEERRRREEEEDDDD____SSSSTTTTDDDDIIIIOOOO environment variable
  178.                               is set, the prefix string is ignored.
  179.  
  180.                               Some strings have special meaning and are
  181.                               translated as follows:
  182.  
  183.                               *   %%%%gggg translates into the global rank of the
  184.                                   process producing the output. This is
  185.                                   equivalent to the rank of the process in
  186.                                   MMMMPPPPIIII____CCCCOOOOMMMMMMMM____WWWWOOOORRRRLLLLDDDD when not running in ssssppppaaaawwwwnnnn
  187.                                   ccccaaaappppaaaabbbblllleeee mode.  In the latter case, this
  188.                                   translates to the rank of the process within
  189.                                   the universe specified at job launch.
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. mmmmppppiiiirrrruuuunnnn((((1111))))                                                            mmmmppppiiiirrrruuuunnnn((((1111))))
  203.  
  204.  
  205.  
  206.                               *   %%%%GGGG translates into the number of processes
  207.                                   in MMMMPPPPIIII____CCCCOOOOMMMMMMMM____WWWWOOOORRRRLLLLDDDD, or, if running in ssssppppaaaawwwwnnnn
  208.                                   ccccaaaappppaaaabbbblllleeee mode, the value of the
  209.                                   MMMMPPPPIIII____UUUUNNNNIIIIVVVVEEEERRRRSSSSEEEE____SSSSIIIIZZZZEEEE attribute.
  210.  
  211.                               *   %%%%hhhh translates into the rank of the host on
  212.                                   which the process is running, relative to
  213.                                   the mmmmppppiiiirrrruuuunnnn command line.  This string is not
  214.                                   relevant for processes started via
  215.                                   MMMMPPPPIIII____CCCCoooommmmmmmm____ssssppppaaaawwwwnnnn or MMMMPPPPIIII____CCCCoooommmmmmmm____ssssppppaaaawwwwnnnn____mmmmuuuullllttttiiiipppplllleeee.
  216.  
  217.                               *   %%%%HHHH translates into the total number of hosts
  218.                                   in the job.  This string is not relevant for
  219.                                   processes started via MMMMPPPPIIII____CCCCoooommmmmmmm____ssssppppaaaawwwwnnnn or
  220.                                   MMMMPPPPIIII____CCCCoooommmmmmmm____ssssppppaaaawwwwnnnn____mmmmuuuullllttttiiiipppplllleeee.
  221.  
  222.                               *   %%%%llll translates into the rank of the process
  223.                                   relative to other processes running on the
  224.                                   same host.
  225.  
  226.                               *   %%%%LLLL translates into the total number of
  227.                                   processes running on the host.
  228.  
  229.                               *   %%%%wwww translates into the world rank of the
  230.                                   process, i.e. its rank in a MMMMPPPPIIII____CCCCOOOOMMMMMMMM____WWWWOOOORRRRLLLLDDDD.
  231.                                   When not running in ssssppppaaaawwwwnnnn ccccaaaappppaaaabbbblllleeee mode, this
  232.                                   is equivalent to %%%%gggg.
  233.  
  234.                               *   %%%%WWWW translates into the total number of
  235.                                   processes in MMMMPPPPIIII____CCCCOOOOMMMMMMMM____WWWWOOOORRRRLLLLDDDD.  When not
  236.                                   running in ssssppppaaaawwwwnnnn ccccaaaappppaaaabbbblllleeee mode, this is
  237.                                   equivalent to %%%%GGGG.
  238.  
  239.                               *   %%%%@@@@ translates into the name of the host on
  240.                                   which the process is running.
  241.  
  242.                               For examples of the use of these strings, first
  243.                               consider the following code fragment:
  244.  
  245.                                    main(int argc, char **argv)
  246.                                    {
  247.                                       MPI_Init(&argc, &argv);
  248.  
  249.                                       printf("Hello world\n");
  250.  
  251.                                       MPI_Finalize();
  252.                                    }
  253.  
  254.  
  255.                               Depending on how this code is run, the results
  256.                               of running the mmmmppppiiiirrrruuuunnnn command will be similar to
  257.                               those in the following examples:
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. mmmmppppiiiirrrruuuunnnn((((1111))))                                                            mmmmppppiiiirrrruuuunnnn((((1111))))
  269.  
  270.  
  271.  
  272.                               % mpirun -np 2 a.out
  273.                               Hello world
  274.                               Hello world
  275.  
  276.  
  277.  
  278.                               % mpirun -prefix ">" -np 2 a.out
  279.                               >Hello world
  280.                               >Hello world
  281.  
  282.  
  283.  
  284.                               % mpirun -prefix "%g" 2 a.out
  285.                               0Hello world
  286.                               1Hello world
  287.  
  288.  
  289.  
  290.                               % mpirun -prefix "[%g] " 2 a.out
  291.                               [0] Hello world
  292.                               [1] Hello world
  293.  
  294.  
  295.  
  296.                               % mpirun -prefix "<process %g out of %G> " 4 a.out
  297.                               <process 1 out of 4> Hello world
  298.                               <process 0 out of 4> Hello world
  299.                               <process 3 out of 4> Hello world
  300.                               <process 2 out of 4> Hello world
  301.  
  302.  
  303.  
  304.                               % mpirun -prefix "%@: " hosta,hostb 1 a.out
  305.                               hosta: Hello world
  306.                               hostb: Hello world
  307.  
  308.  
  309.  
  310.                     % mpirun -prefix "%@ (%l out of %L) %g: " hosta 2, hostb 3 a.out
  311.  
  312.                               hosta (0 out of 2) 0: Hello world
  313.                               hosta (1 out of 2) 1: Hello world
  314.                               hostb (0 out of 3) 2: Hello world
  315.                               hostb (1 out of 3) 3: Hello world
  316.                               hostb (2 out of 3) 4: Hello world
  317.  
  318.  
  319.  
  320.                     % mpirun -prefix "%@ (%h out of %H): " hosta,hostb,hostc 2 a.out
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. mmmmppppiiiirrrruuuunnnn((((1111))))                                                            mmmmppppiiiirrrruuuunnnn((((1111))))
  335.  
  336.  
  337.  
  338.                               hosta (0 out of 3): Hello world
  339.                               hostb (1 out of 3): Hello world
  340.                               hostc (2 out of 3): Hello world
  341.                               hosta (0 out of 3): Hello world
  342.                               hostc (2 out of 3): Hello world
  343.                               hostb (1 out of 3): Hello world
  344.  
  345.  
  346.  
  347.      ----ssssttttaaaattttssss                   Prints statistics about the amount of data sent
  348.                               with MPI calls during the MMMMPPPPIIII____FFFFiiiinnnnaaaalllliiiizzzzeeee process.
  349.                               Data is sent to ssssttttddddeeeerrrrrrrr.  Users can combine this
  350.                               option with the ----pppp option to prefix the
  351.                               statistics messages with the MPI rank.  For more
  352.                               details, see the MMMMPPPPIIII____SSSSGGGGIIII____ssssttttaaaatttt____pppprrrriiiinnnntttt(3) man page.
  353.  
  354.      ----uuuupppp _u__s_i_z_e               Specifies the value of the MMMMPPPPIIII____UUUUNNNNIIIIVVVVEEEERRRRSSSSEEEE____SSSSIIIIZZZZEEEE
  355.                               attribute to be used in supporting
  356.                               MMMMPPPPIIII____CCCCoooommmmmmmm____ssssppppaaaawwwwnnnn and MMMMPPPPIIII____CCCCoooommmmmmmm____ssssppppaaaawwwwnnnn____mmmmuuuullllttttiiiipppplllleeee.
  357.                               This field must be set if either of these
  358.                               functions are to be used by the application
  359.                               being launched by mmmmppppiiiirrrruuuunnnn.  Setting this field
  360.                               implies the MMMMPPPPIIII job is being run in ssssppppaaaawwwwnnnn
  361.                               ccccaaaappppaaaabbbblllleeee mode.
  362.  
  363.      ----vvvv[[[[eeeerrrrbbbboooosssseeee]]]]               Displays comments on what mmmmppppiiiirrrruuuunnnn is doing when
  364.                               launching the MPI application.
  365.  
  366.    EEEEnnnnttttrrrryyyy OOOObbbbjjjjeeeeccccttttssss
  367.      _e_n_t_r_y__o_b_j_e_c_t describes a host on which to run a program, and the local
  368.      options for that host.  You can list any number of _e_n_t_r_y__o_b_j_e_c_t entries
  369.      on the mmmmppppiiiirrrruuuunnnn command line.
  370.  
  371.      In the common case (Single Program Multiple Data (SPMD)), in which the
  372.      same program runs with identical arguments on each host, usually only one
  373.      _e_n_t_r_y__o_b_j_e_c_t needs to be specified.
  374.  
  375.      Each _e_n_t_r_y__o_b_j_e_c_t has the following components:
  376.  
  377.      *   One or more host names (not needed if you run on the local host)
  378.  
  379.      *   Number of processes to start on each host
  380.  
  381.      *   Name of an executable program
  382.  
  383.      *   Arguments to the executable program (optional)
  384.  
  385.      _e_n_t_r_y__o_b_j_e_c_t has the following format:
  386.  
  387.           host_list local_options program program_arguments
  388.  
  389.  
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. mmmmppppiiiirrrruuuunnnn((((1111))))                                                            mmmmppppiiiirrrruuuunnnn((((1111))))
  401.  
  402.  
  403.  
  404.      The _h_o_s_t__l_i_s_t operand is either a single host (machine name) or a comma-
  405.      separated list of hosts on which to run an MPI program.
  406.  
  407.      The _l_o_c_a_l__o_p_t_i_o_n_s operand contains information that applies to a specific
  408.      host list. The following local options are supported:
  409.  
  410.      LLLLooooccccaaaallll OOOOppppttttiiiioooonnnn                  DDDDeeeessssccccrrrriiiippppttttiiiioooonnnn
  411.  
  412.      ----ffff[[[[iiiilllleeee]]]] _f_i_l_e__n_a_m_e             Specifies a text file that contains mmmmppppiiiirrrruuuunnnn
  413.                                    arguments (same as _g_l_o_b_a_l__o_p_t_i_o_n_s.)  For
  414.                                    more details, see the subsection titled
  415.                                    "Using a File For mmmmppppiiiirrrruuuunnnn Arguments" on this
  416.                                    man page.
  417.  
  418.      ----nnnnpppp _n_u_m__p_r_o_c                  Specifies the number of processes on which
  419.                                    to run. This local option behaves the same
  420.                                    as ----nnnnpppp.
  421.  
  422.      The _p_r_o_g_r_a_m _p_r_o_g_r_a_m__a_r_g_u_m_e_n_t_s operand specifies the name of the program
  423.      that you are running and its accompanying options.
  424.  
  425.    UUUUssssiiiinnnngggg aaaa FFFFiiiilllleeee ffffoooorrrr mmmmppppiiiirrrruuuunnnn AAAArrrrgggguuuummmmeeeennnnttttssss
  426.      Because the full specification of a complex job can be lengthy, you can
  427.      enter mmmmppppiiiirrrruuuunnnn arguments in a file and use the ----ffff option to specify the
  428.      file on the mmmmppppiiiirrrruuuunnnn command line, as in the following example:
  429.  
  430.           mpirun -f my_arguments
  431.  
  432.  
  433.      The arguments file is a text file that contains argument segments.  White
  434.      space is ignored in the arguments file, so you can include spaces and
  435.      newline characters for readability. An arguments file can also contain
  436.      additional ----ffff options.
  437.  
  438.    LLLLaaaauuuunnnncccchhhhiiiinnnngggg PPPPrrrrooooggggrrrraaaammmmssss oooonnnn tttthhhheeee LLLLooooccccaaaallll HHHHoooosssstttt
  439.      For testing and debugging, it is often useful to run an MPI program on
  440.      the local host only without distributing it to other systems. To run the
  441.      application locally, enter mmmmppppiiiirrrruuuunnnn with the ----nnnnpppp or ----nnnntttt argument. Your
  442.      entry must include the number of processes to run and the name of the MPI
  443.      executable file.
  444.  
  445.      The following command starts three instances of the application mmmmtttteeeesssstttt,
  446.      which is passed an arguments list (arguments are optional):
  447.  
  448.           mpirun -np 3 mtest 1000 "arg2"
  449.  
  450.  
  451.      You are not required to use a different host in each entry that you
  452.      specify on the mmmmppppiiiirrrruuuunnnn command.  You can launch a job that has two
  453.      executable files on the same host.  In the following example, both
  454.      executable files use shared memory.
  455.  
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. mmmmppppiiiirrrruuuunnnn((((1111))))                                                            mmmmppppiiiirrrruuuunnnn((((1111))))
  467.  
  468.  
  469.  
  470.           mpirun host_a -np 6 a.out : host_a -np 4 b.out
  471.  
  472.      Note that for IRIX hosts, both executable files must be compiled
  473.      as either 32-bit or 64-bit applications.
  474.  
  475.    RRRRuuuunnnnnnnniiiinnnngggg PPPPrrrrooooggggrrrraaaammmmssss iiiinnnn SSSShhhhaaaarrrreeeedddd MMMMeeeemmmmoooorrrryyyy MMMMooooddddeeee
  476.      For running programs in MPI shared memory mode on a single host, the
  477.      format of the mmmmppppiiiirrrruuuunnnn command is as follows:
  478.  
  479.           mpirun -nt [num_tasks] progname
  480.  
  481.  
  482.      The ----nnnntttt option specifies the number of tasks for shared memory MPI. A
  483.      single UNIX process is run with multiple tasks representing MPI
  484.      processes.  The _p_r_o_g_n_a_m_e operand specifies the name of the program that
  485.      you are running and its accompanying options.
  486.  
  487.      The ----nnnntttt option to mmmmppppiiiirrrruuuunnnn is supported on IRIX and Linux systems for
  488.      consistency across platforms. However, since the default mode of
  489.      execution on a single system is to use shared memory, the option behaves
  490.      the same as if you specified the ----nnnnpppp option to mmmmppppiiiirrrruuuunnnn.  The following
  491.      example runs ten instances of aaaa....oooouuuutttt in shared memory mode on hhhhoooosssstttt____aaaa:
  492.  
  493.           mpirun -nt 10 a.out
  494.  
  495.  
  496.    LLLLaaaauuuunnnncccchhhhiiiinnnngggg aaaa DDDDiiiissssttttrrrriiiibbbbuuuutttteeeedddd PPPPrrrrooooggggrrrraaaammmm
  497.      You can use mmmmppppiiiirrrruuuunnnn to launch a program that consists of any number of
  498.      executable files and processes and distribute it to any number of hosts.
  499.      A host is usually a single machine, or, for IRIX systems, can be any
  500.      accessible computer running Array Services software.  For available nodes
  501.      on systems running Array Services software, see the
  502.      ////uuuussssrrrr////lllliiiibbbb////aaaarrrrrrrraaaayyyy////aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff file.
  503.  
  504.      You can list multiple entries on the mmmmppppiiiirrrruuuunnnn command line. Each entry
  505.      contains an MPI executable file and a combination of hosts and process
  506.      counts for running it. This gives you the ability to start different
  507.      executable files on the same or different hosts as part of the same MPI
  508.      application.
  509.  
  510.      The following examples show various ways to launch an application that
  511.      consists of multiple MPI executable files on multiple hosts.
  512.  
  513.      The following example runs ten instances of the aaaa....oooouuuutttt file on hhhhoooosssstttt____aaaa:
  514.  
  515.           mpirun host_a -np 10 a.out
  516.  
  517.  
  518.      When specifying multiple hosts, the ----nnnnpppp or ----nnnntttt option can be omitted with
  519.      the number of processes listed directly.  The following example launches
  520.      ten instances of ffffrrrreeeedddd on three hosts.  ffffrrrreeeedddd has two input arguments.
  521.  
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. mmmmppppiiiirrrruuuunnnn((((1111))))                                                            mmmmppppiiiirrrruuuunnnn((((1111))))
  533.  
  534.  
  535.  
  536.           mpirun host_a, host_b, host_c 10 fred arg1 arg2
  537.  
  538.  
  539.      The following IRIX example launches an MPI application on different hosts
  540.      with different numbers of processes and executable files, using an array
  541.      called tttteeeesssstttt:
  542.  
  543.           mpirun -array test host_a 6 a.out : host_b 26 b.out
  544.  
  545.  
  546.      The following example launches an MPI application on different hosts out
  547.      of the same directory on both hosts:
  548.  
  549.           mpirun -d /tmp/mydir host_a 6 a.out : host_b 26 b.out
  550.  
  551.  
  552.    JJJJoooobbbb CCCCoooonnnnttttrrrroooollll
  553.      It is possible to terminate, suspend, and/or resume an entire MPI
  554.      application (potentially running across multiple hosts) by using the same
  555.      control characters that work for serial programs.  For example, sending a
  556.      SSSSIIIIGGGGIIIINNNNTTTT signal to mmmmppppiiiirrrruuuunnnn terminates all processes in an MPI job.
  557.      Similarly, sending a SSSSIIIIGGGGTTTTSSSSTTTTPPPP signal to mmmmppppiiiirrrruuuunnnn suspends an MPI job and
  558.      sending a SSSSIIIIGGGGCCCCOOOONNNNTTTT signal resumes a job.
  559.  
  560.    SSSSiiiiggggnnnnaaaallll PPPPrrrrooooppppaaaaggggaaaattttiiiioooonnnn
  561.      It is possible to send some user signals to all processes in an MPI
  562.      application (potentially running across multiple hosts).  Presently,
  563.      mmmmppppiiiirrrruuuunnnn supports two user-defined signals:  SSSSIIIIGGGGUUUURRRRGGGG and SSSSIIIIGGGGUUUUSSSSRRRR1111.  To make
  564.      use of this feature, the MPI program needs to have a signal handler that
  565.      catches SSSSIIIIGGGGUUUURRRRGGGG or SSSSIIIIGGGGUUUUSSSSRRRR1111. When the SSSSIIIIGGGGUUUURRRRGGGG or SSSSIIIIGGGGUUUUSSSSRRRR1111 signals are sent to
  566.      the mmmmppppiiiirrrruuuunnnn process ID, the mmmmppppiiiirrrruuuunnnn process will catch the signal and
  567.      propagate it to all MPI processes.
  568.  
  569.    TTTTrrrroooouuuubbbblllleeeesssshhhhoooooooottttiiiinnnngggg
  570.      Problems you encounter when launching MPI jobs will typically result in a
  571.      ccccoooouuuulllldddd nnnnooootttt rrrruuuunnnn eeeexxxxeeeeccccuuuuttttaaaabbbblllleeee error message from mmmmppppiiiirrrruuuunnnn. There are many
  572.      possible causes for this message, including (but not limited to) the
  573.      following reasons:
  574.  
  575.      *   The .... is missing from the user's search path. This problem most
  576.          commonly occurs when the ----nnnnpppp syntax is used.
  577.  
  578.      *   No permission has been granted to the local host to launch processes
  579.          on remote hosts.  Because MPI references the ....rrrrhhhhoooossssttttssss file for
  580.          authentication, this can happen even if you are running your job on
  581.          the same machine. For example, if you specify mmmmppppiiiirrrruuuunnnn _l_o_c_a_l_h_o_s_t 2222
  582.          aaaa....oooouuuutttt, MPI will treat _l_o_c_a_l_h_o_s_t as a remote host.  The usual solution
  583.          to this problem is to put the local host name in your ~~~~////....rrrrhhhhoooossssttttssss file.
  584.  
  585.      *   The working directory is defaulting to $$$$HHHHOOOOMMMMEEEE instead of to $$$$PPPPWWWWDDDD on
  586.          remote machines; use either MMMMPPPPIIII____DDDDIIIIRRRR or the ----dddd option.
  587.  
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598. mmmmppppiiiirrrruuuunnnn((((1111))))                                                            mmmmppppiiiirrrruuuunnnn((((1111))))
  599.  
  600.  
  601.  
  602.      *   llllooooccccaaaallllhhhhoooosssstttt does not appear in the ////eeeettttcccc////hhhhoooossssttttssss....eeeeqqqquuuuiiiivvvv file (required for
  603.          ----nnnnpppp syntax).
  604.  
  605.      *   For IRIX systems, the Array Services daemon (aaaarrrrrrrraaaayyyydddd) has been
  606.          incorrectly configured; use aaaasssscccchhhheeeecccckkkk to test your configuration.
  607.  
  608.      *   In general, if aaaarrrrsssshhhheeeellllllll fails, mmmmppppiiiirrrruuuunnnn usually fails as well.
  609.  
  610.    LLLLiiiimmmmiiiittttaaaattttiiiioooonnnnssss
  611.      The following practices will break the mmmmppppiiiirrrruuuunnnn parser:
  612.  
  613.      *   Using machine names that are numbers (for example, 3333, 111122227777, and so on)
  614.  
  615.      *   Using MPI applications whose names match mmmmppppiiiirrrruuuunnnn options (for example,
  616.          ----dddd, ----ffff, and so on)
  617.  
  618.      *   Using MPI applications that use a colon (::::) in their command-lines.
  619.  
  620. NNNNOOOOTTTTEEEESSSS
  621.      Running MPI jobs in the background is not supported on IRIX or Linux
  622.      systems.
  623.  
  624.      The mmmmppppiiiirrrruuuunnnn process is still connected to the tty when a job is placed in
  625.      the background.  One of the things that mmmmppppiiiirrrruuuunnnn polls for is input from
  626.      ssssttttddddiiiinnnn.  If it happens to be polling for ssssttttddddiiiinnnn when a user types in a
  627.      window after putting an MPI job in the background, the job will abort
  628.      upon receiving a SSSSIIIIGGGGTTTTTTTTIIIINNNN signal.  This behavior is intermittent,
  629.      depending on whether mmmmppppiiiirrrruuuunnnn happens to be looking for and sees any ssssttttddddiiiinnnn
  630.      input.  Currently, there is no solution to this restriction, but for a
  631.      job that does not use ssssttttddddiiiinnnn, you can redirect ssssttttddddiiiinnnn from ////ddddeeeevvvv////nnnnuuuullllllll, as
  632.      shown in the following example:
  633.  
  634.      Example:
  635.  
  636.           mmmmppppiiiirrrruuuunnnn ----nnnnpppp 2222 ....////aaaa....oooouuuutttt <<<< ddddeeeevvvv////nnnnuuuullllllll &&&&
  637.  
  638.  
  639. RRRREEEETTTTUUUURRRRNNNN VVVVAAAALLLLUUUUEEEESSSS
  640.      On exit, mmmmppppiiiirrrruuuunnnn returns the appropriate error code to the run
  641.      environment.
  642.  
  643. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  644.      mmmmppppiiii(1)
  645.  
  646.      tttteeeerrrrmmmmiiiioooo(7)
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.                                                                        PPPPaaaaggggeeee 11110000
  658.  
  659.  
  660.  
  661.